package net.zoneland.geological.usermanage.service;


import java.util.List;
import java.util.Map;

import net.zoneland.geological.usermanage.entity.Tbl_user_datapermission;

/**
 * 表   名：TBL_USER_DATAPERMISSIONSERVICEI<br/>
 * 注   释：用户数据权限配置表<br/>
 * 作   者：李义<br/>
 * 日   期：2017-08-09 18:46:00

 * tbl_user_datapermission[用户数据权限配置表]表操作Service接口类
**/
public interface Tbl_user_datapermissionServiceI { 
	/**
	 * 新增或者更新数据方法接口
	**/
	public Tbl_user_datapermission addOrUpdate( Tbl_user_datapermission tbl_user_datapermission ) throws Exception;

	/**
	 * 新增数据方法接口
	**/
	public boolean add( Tbl_user_datapermission tbl_user_datapermission ) throws Exception;

	/**
	 * 更新数据方法接口
	**/
	public boolean update( Tbl_user_datapermission tbl_user_datapermission ) throws Exception;

	/**
	 * 查询数据方法接口
	**/
	public Tbl_user_datapermission get( Map<String, Object> map ) throws Exception;

	/**
	 * 查询数据方法接口（列表）
	**/
	public List<Tbl_user_datapermission> getList(Map<String, Object> map) throws Exception;

	/**
	 * 查询数据总数方法接口
	**/
	public int getListCount(Map<String, Object> map) throws Exception;

	/**
	 * 数据删除方法接口
	**/
	public boolean delete( Map<String, Object> map ) throws Exception;
	
	/**
	 * 根据用户获取用户可以访问到的所有设备ID列表
	 * @param login_name
	 * @return
	 * @throws Exception
	 */
	public List<String> getStationIdsWithPermission( String login_name ) throws Exception;
	
	/**
	 * 根据用户获取用户可以访问到的所有灾害体ID列表
	 * @param login_name
	 * @return
	 * @throws Exception
	 */
	public List<String> getZhtIdsWithPermission( String login_name ) throws Exception;
	
	/**
	 * 根据用户获取用户可以访问到的所有区域CODE列表
	 * @param map
	 * @return
	 * @throws Exception
	 */
	public List<String> getAreaCodesWithPermission( String login_name ) throws Exception;
	/**
	 * 根据数据权限获取可以访问到的所有区域CODE列表
	 * @param map
	 * @return
	 * @throws Exception
	 */
	public List<String> getAreaCodesWithPermission(List<Tbl_user_datapermission> user_datapermission_list) throws Exception;
	
	/**
	 * 根据用户获取用户可以访问到的所有项目ID列表
	 * @param login_name
	 * @return
	 * @throws Exception
	 */
	public List<String> getProjectIdsWithPermission( String login_name ) throws Exception;
	
	/**
	 * 根据数据权限列表获取可以访问到的所有项目ID列表
	 * @param user_datapermission_list
	 * @return
	 * @throws Exception
	 */
	public List<String> getProjectIdsWithPermission(List<Tbl_user_datapermission> user_datapermission_list) throws Exception;

	/**
	 * 根据用户的登录名以及指定的城市编码，查询该城市类可以访问到的项目ID列表
	 * @param city_code
	 * @param login_name
	 * @return
	 */
	public List<String> getVisibleProjectIdsWithCityCodeLoginName(String city_code, String login_name);
	/**
	 * 根据用户的登录名以及指定的城市编码，查询该城市类可以编辑到的项目ID列表
	 * @param city_code
	 * @param login_name
	 * @return
	 */
	public List<String> getEditableProjectIdsWithCityCodeLoginName(String city_code, String login_name);

	public Boolean isCityController( String login_name, List<String> area_codes);
	
}
